K-Means Clustering এর বেসিক ধারণা

Machine Learning - সাইকিট-লার্ন (Scikit-Learn) - K-Means Clustering
174

K-Means Clustering হলো একটি জনপ্রিয় অপ্রকাশিত শেখার (Unsupervised Learning) ক্লাস্টারিং অ্যালগরিদম, যা ডেটাকে একাধিক গ্রুপে বা ক্লাস্টারে ভাগ করে। এই অ্যালগরিদমটি বিষয়ভিত্তিক ডেটা বিশ্লেষণ বা প্যাটার্ন ডিটেকশন এ ব্যাপকভাবে ব্যবহৃত হয়, যেখানে ডেটা আগেই কোনো লেবেল (label) দেওয়া থাকে না এবং আমাদের উদ্দেশ্য হল ডেটার মধ্যে লুকানো গঠন বা সম্পর্ক খুঁজে বের করা।

K-Means Clustering এর মূল ধারণা:

K-Means অ্যালগরিদমটি একটি centroid-based ক্লাস্টারিং পদ্ধতি, যেখানে ক্লাস্টার কেন্দ্র বা centroid হিসাবে একটি মান নির্ধারণ করা হয় এবং তারপর ডেটার প্রতি পয়েন্টকে তার নিকটবর্তী ক্লাস্টারের centroid এর দিকে সমাবেশ করা হয়।

K-Means Clustering এর ধাপসমূহ:

  1. K নির্বাচন করা:
    প্রথমে, আপনি কেমন সংখ্যক ক্লাস্টার চান তা নির্ধারণ করতে হবে, যা K-এর মান। যেমন, আপনি যদি ডেটাকে ৩টি গ্রুপে ভাগ করতে চান, তবে K=3 হবে।
  2. Centroids নির্বাচন:
    K সংখ্যক ক্লাস্টারের জন্য প্রাথমিকভাবে Kটি random centroid নির্বাচন করা হয়।
  3. ডেটা পয়েন্ট ক্লাস্টারে ভাগ করা:
    প্রতিটি ডেটা পয়েন্টকে তার নিকটবর্তী centroid এর ক্লাস্টারে অ্যাসাইন করা হয়। এটি Euclidean distance বা অন্য কোনো মেট্রিক্স ব্যবহার করে করা হয়।
  4. Centroids আপডেট করা:
    প্রতিটি ক্লাস্টারের জন্য নতুন centroid নির্ধারণ করা হয়, যা ক্লাস্টারের সমস্ত পয়েন্টের গড় মান হবে। এরপর, এই নতুন centroid এর মান আপডেট করা হয়।
  5. পুনরাবৃত্তি (Iterate):
    এই প্রক্রিয়াটি পুনরাবৃত্তি করা হয় যতক্ষণ না centroid গুলি কনভার্জ বা স্থির হয়ে যায়। অর্থাৎ, centroid আর পরিবর্তিত হয় না বা পরিবর্তনের হার খুব কম হয়ে যায়।

K-Means Algorithm এর ফর্মুলা:

K-Means অ্যালগরিদমে ক্লাস্টারিং করার জন্য একটি লক্ষ্য ফাংশন ব্যবহার করা হয় যা ইনপুট ডেটার জন্য ক্লাস্টারদের মধ্যে সর্বনিম্ন Within-cluster Sum of Squares (WCSS) তৈরি করতে সাহায্য করে।

J=i=1KxjCixjμi2J = \sum_{i=1}^{K} \sum_{x_j \in C_i} \| x_j - \mu_i \|^2

এখানে:

  • JJ হল লক্ষ্য ফাংশন (Objective function), যা WCSS পরিমাপ করে।
  • KK হল ক্লাস্টারের সংখ্যা (K ক্লাস্টার হবে)।
  • xjx_j হল একটি ডেটা পয়েন্ট।
  • CiC_i হল ক্লাস্টার ii এর মধ্যে থাকা পয়েন্টগুলি।
  • μi\mu_i হল ক্লাস্টার ii এর centroid।

এই ফাংশনটি লক্ষ্য রাখে যাতে ডেটা পয়েন্টগুলি তাদের নিজস্ব ক্লাস্টারের centroid এর কাছাকাছি থাকে।


K-Means Clustering এর উদাহরণ:

ধরা যাক, আমাদের কাছে একটি ডেটাসেট রয়েছে যা বিভিন্ন পণ্যের বিক্রয় এবং মূল্য সম্পর্কিত তথ্য ধারণ করে এবং আমরা এই পণ্যগুলিকে গ্রুপে ভাগ করতে চাই।

ধাপ ১: প্রথমে ডেটাসেট তৈরি করি:

পণ্যবিক্রয়মূল্য
A20050
B22055
C23060
D10030
E12035
F13040

ধাপ ২: আপনি যদি K=2 (দুটি ক্লাস্টার) নির্বাচন করেন, তাহলে K-Means অ্যালগরিদমটি দুটি গ্রুপে এই পণ্যগুলো ভাগ করবে।

  1. প্রথমে 2টি র‍্যান্ডম centroids নির্বাচন করা হবে।
  2. প্রতিটি ডেটা পয়েন্টকে সবচেয়ে কাছের centroid-এর ক্লাস্টারে অ্যাসাইন করা হবে।
  3. এরপর, নতুন centroid গুলি আপডেট করা হবে এবং এই প্রক্রিয়া পুনরাবৃত্তি করা হবে যতক্ষণ না centroid গুলি স্থির হয়ে যায়।

K-Means Clustering এর সুবিধা এবং সীমাবদ্ধতা

সুবিধা:

  1. সহজ এবং দ্রুত: K-Means অ্যালগরিদমটি সহজ এবং দ্রুত কাজ করে। এটি বড় ডেটাসেটের জন্য উপযুক্ত।
  2. ব্যবহারিক সুবিধা: এটি এমন সময়ে কার্যকর যেখানে আপনি পূর্বনির্ধারিত ক্লাস্টারের সংখ্যা জানেন।
  3. কম্পিউটেশনালভাবে কার্যকর: অন্যান্য ক্লাস্টারিং অ্যালগরিদমের তুলনায় এটি দ্রুত এবং কম্পিউটেশনালভাবে কার্যকর।

সীমাবদ্ধতা:

  1. K নির্বাচন: K এর মান কিভাবে নির্বাচন করবেন, এটি নির্ধারণ করা কঠিন হতে পারে। সাধারণত K এর জন্য উপযুক্ত মান নির্বাচন করতে Elbow Method বা Silhouette Analysis ব্যবহার করা হয়।
  2. প্রাথমিক Centroids: প্রাথমিক centroid গুলি র‍্যান্ডমভাবে নির্বাচন করা হয়, যার কারণে এটি বিভিন্ন রান-এ ভিন্ন ফলাফল দিতে পারে।
  3. অ্যাসুম্পশন: K-Means একটি গোলাকার ক্লাস্টারের অনুমান করে, যা আসল ডেটার জন্য সবসময় উপযুক্ত নাও হতে পারে। এটি জটিল বা অস্বাভাবিক আকারের ক্লাস্টারগুলির জন্য ভালো কাজ নাও করতে পারে।

K-Means এর উদাহরণ কোড (Python)

from sklearn.cluster import KMeans
import numpy as np

# উদাহরণ ডেটাসেট (বিক্রয় এবং মূল্য)
X = np.array([[200, 50], [220, 55], [230, 60], [100, 30], [120, 35], [130, 40]])

# K-Means মডেল তৈরি (K=2)
kmeans = KMeans(n_clusters=2, random_state=0)
kmeans.fit(X)

# ক্লাস্টার অ্যাসাইনমেন্ট
print("Cluster Centers:", kmeans.cluster_centers_)
print("Labels:", kmeans.labels_)

# নতুন ডেটার জন্য পূর্বাভাস
new_data = np.array([[180, 45], [150, 38]])
predictions = kmeans.predict(new_data)
print("Predictions for new data:", predictions)

এই কোডে, KMeans ক্লাস ব্যবহার করে আমরা 2টি ক্লাস্টার তৈরি করেছি এবং ডেটাকে সেই দুটি ক্লাস্টারে ভাগ করেছি।


সারাংশ:

K-Means Clustering একটি শক্তিশালী অপ্রকাশিত শেখার অ্যালগরিদম যা ডেটাকে নির্দিষ্ট সংখ্যক ক্লাস্টারে ভাগ করে। এটি খুবই সহজ, দ্রুত এবং কম্পিউটেশনালভাবে কার্যকর, তবে এটি কিছু সীমাবদ্ধতা যেমন প্রাথমিক centroid নির্বাচন এবং K এর মান নির্বাচন নিয়ে কাজ করে। K-Means প্রধানত নির্দেশক সম্পর্ক খুঁজে বের করার জন্য ব্যবহৃত হয়, যেমন ক্লাস্টারিং টাস্কে, যেখানে ইনপুট ডেটাতে কোনো পূর্বনির্ধারিত শ্রেণী নেই।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...